package main

import (
	"Holidays/api"
	"Holidays/fetchHolidays"
	"Holidays/model"
	"Holidays/save"
	"fmt"
	"time"

	"github.com/gin-gonic/gin"
	"github.com/robfig/cron/v3"
)

// UpdateHolidays 定时任务函数，用于更新节假日数据
func UpdateHolidays() {
	// 假设我们只更新当年的节假日数据
	year := time.Now().Year()
	holidays, err := fetchHolidays.FetchHolidays(year)
	if err != nil {
		fmt.Printf("查询节假日出错了，year %d: %v\n", year, err)
		return
	}
	model.HolidaysMap[year] = holidays
}

func main() {
	holidaysMap := make(map[int][]model.Holiday)
	// 迭代2018年到2028年的年份
	for year := 2018; year <= 2028; year++ {
		holidays, err := fetchHolidays.FetchHolidays(year)
		fmt.Println("---------------")
		fmt.Println("-----holidays----------", holidays)
		fmt.Println("---------------")
		if err != nil {
			fmt.Printf("查询节假日出错了，year %d: %v\n", year, err)
			continue
		}
		holidaysMap[year] = holidays
	}

	// 将节假日数据保存到JSON文件
	err := save.SaveHolidaysToJSON(holidaysMap, "save/holidays.json")
	if err != nil {
		fmt.Println("保存节假日数据到JSON文件时出错:", err)
		return
	}
	fmt.Println("节假日数据已成功保存到holidays.json文件中")

	r := gin.Default()
	r.GET("/holidays", api.CheckHoliday)
	// 启动定时任务来更新节假日数据
	c := cron.New()
	_, err = c.AddFunc("*/1 * * * *", UpdateHolidays) //每分钟更新一次数据
	if err != nil {
		fmt.Println("定时任务出错啦:", err)
		return
	}
	c.Start()      // 启动定时任务
	defer c.Stop() // 确保在程序结束时停止定时任务
	if err = r.Run(":8080"); err != nil {
		fmt.Println("程序启动运行失败:", err)
		return
	}
}
